home *** CD-ROM | disk | FTP | other *** search
- /************************************************************************
- * vfw_spec.h *
- * *
- * This code and information is provided "as is" without warranty of *
- * any kind, either expressed or implied, including but not limited to *
- * the implied warranties of merchantability and/or fitness for a *
- * particular purpose. *
- * *
- * Copyright (c) 1994-1995 Intel Corporation. *
- * All Rights Reserved. *
- * *
- ************************************************************************/
- /*
- *
- * DESCRIPTION:
- * The Indeo(R) Video Interactive codec provides access to new features
- * using the ICM_SETCODECSTATE and ICM_GETCODECSTATE messages. This header
- * file defines the data structures used in these messages.
- */
-
- /* $Revision: 1.27 $
- */
-
-
- #ifndef __VFW_SPEC_H__
- #define __VFW_SPEC_H__
-
-
- /* The specific interface version is defined as follows:
- */
- #define INTERFACE_MAJOR_NUMBER(v) ((v) >> 16)
- #define INTERFACE_MINOR_NUMBER(v) ((v) & 0xffff)
- #define CREATE_INTERFACE_VERSION(maj,min) ((((DWORD)maj)<<16) | (((DWORD)min) & 0xffff))
- #define SPECIFIC_INTERFACE_VERSION CREATE_INTERFACE_VERSION(1,2)
-
- /* The codec specific information is handled by the general state
- * handler.
- */
- #define ICM_GETCODECSTATE ICM_GETSTATE
- #define ICM_SETCODECSTATE ICM_SETSTATE
- #define EXTENDED_INTERFACE_SIZE 1
-
- /* OS Environments - Within the Microsoft Windows domain (Win 3.1, Win 95,
- * and Win NT), both applications and codecs can be compiled in either 16 or
- * 32-bit formats. Any combination is allowed with the knowledge that data
- * pointers will not be thunked.
- */
- typedef enum {
- OE_UNDEFINED,
- OE_16,
- OE_32,
- } R4_OS_ENVIRONMENT;
-
-
- /* The type field identifies the kind of operation that should be done as part
- * of the ICM_GETCODECSTATE and ICM_SETCODECSTATE messages.
- *
- * The MT_UNDEFINED value is not a supported type - it should only be used
- * to initialize variables to an "undefined" state.
- */
- typedef enum {
- MT_UNDEFINED,
- MT_DECODE_FRAME_DEFAULT,
- MT_DECODE_FRAME_VALUE,
- MT_DECODE_SEQ_DEFAULT,
- MT_DECODE_SEQ_VALUE,
- MT_ENCODE_SEQ_DEFAULT,
- MT_ENCODE_SEQ_VALUE,
- MT_DECODE_INIT_DATA
- } R4_MESSAGE_TYPE;
-
- /*
- * MT_QUEUE is for 16-bit applications that call 32-bit codecs, only. It
- * is necessary to pre-set ICM_GETCODECSTATE messages by first issuing an
- * ICM_SETCODECSTATE with the MT_QUEUE flag or'ed with the desired
- * message type to get. The ICM_GETCODECSTATE message which follows
- * must set its dwFourCC field to 0.
- */
- #define MT_QUEUE (1UL<<31)
-
- /* UCHAR is defined in Win32 but not Win16 MS* Windows headers.
- */
- #if !defined UCHAR
- typedef unsigned char UCHAR;
- #endif
-
- /* A flag is false if it is zero, otherwise it is true.
- */
- typedef DWORD R4_FLAG;
-
- /* Pointer to a Flag - A pointer to a flag is used by the codec to write
- * status information at a later time.
- */
- typedef R4_FLAG FAR * PTR_R4_FLAG;
-
-
- /* Rectangle - The following structure is used to describe a rectangle.
- */
- typedef struct {
- DWORD dwX;
- DWORD dwY;
- DWORD dwWidth;
- DWORD dwHeight;
- } R4_RECT, FAR * PTR_R4_RECT;
-
-
- /* Transparency Bitmask - A transparency bitmask contains one bit for each
- * pixel in the source image. If a bit is zero the data is transparent.
- * The first bit in each byte is identified by the mask 0x80. The last
- * bit in each byte is identified by the mask 0x01.
- *
- * To allow faster access each row must begin on a DWORD boundary and the
- * total number of bytes must be rounded-up to a multipe of four.
- */
- typedef BYTE FAR * PTR_R4_BITMASK;
-
-
- /* Playback Platform - The codec supports several playback options. This is
- * not hardware specific. Instead it rates the relative capabilities of the
- * hardware.
- */
- typedef enum {
- PP_LOW,
- PP_MEDIUM,
- PP_HIGH,
- } R4_PLAYBACK_PLATFORM;
-
-
- /* Transparency Method - The codec supports a number of tranparency encoding
- * methods. The enumeration specifies the transparency method.
- */
- typedef enum {
- TM_UNDEFINED,
- TM_NONE,
- TM_RANGE,
- TM_BITMASK,
- TM_FRAME,
- TM_ALPHA_CHANNEL /* XRGB color formats only */
- } R4_TRANS_METHOD;
-
-
- /* Transparency Range - A transparency range is specified using minimum
- * and maximum values for R, G, and B. Any pixel with values within this range
- * (inclusive) is considered transparent.
- */
- typedef struct {
- WORD u16Reserved;
- UCHAR u8BlueLow;
- UCHAR u8BlueHigh;
- UCHAR u8GreenLow;
- UCHAR u8GreenHigh;
- UCHAR u8RedLow;
- UCHAR u8RedHigh;
- } R4_RANGE, FAR * PTR_R4_RANGE;
-
-
- /* The structure header is a set fields that are common,
- * to each of the data structures that follows.
- */
- typedef struct {
- DWORD dwSize;
- DWORD dwFourCC;
- DWORD dwVersion;
- LONG mtType;
- LONG oeEnvironment;
- DWORD dwFlags;
- } R4_HEADER, FAR * PTR_R4_HEADER;
- /* The structure header size is enough room for dwSize, dwFourCC,
- * dwVersion, dwType, dwEnvironment, and dwFlags
- */
- #define R4_STRUCTURE_HEADER_SIZE (sizeof(R4_HEADER))
-
-
- typedef enum {
- OFF,
- LOW,
- MEDIUM,
- HIGH
- } R4_DITHER;
-
- /* Some decode parameters can be changed prior to either an ICM_DECOMPRESS or
- * ICM_DECOMPRESSEX mesage. These are found in the R4_DEC_FRAME_DATA
- * structure. See CUSTOM_INTERFACE_ENCODER_DATA for structure size constraints.
- */
- #define DECFRAME_TIME_LIMIT (1UL<<0)
- #define DECFRAME_DECODE_RECT (1UL<<1)
- #define DECFRAME_VIEW_RECT (1UL<<2)
- #define DECFRAME_BOUNDING_RECT (1UL<<3)
- #define DECFRAME_TRANS_BITMASK (1UL<<4)
- #define DECFRAME_BRIGHTNESS (1UL<<5)
- #define DECFRAME_SATURATION (1UL<<6)
- #define DECFRAME_CONTRAST (1UL<<7)
- #define DECFRAME_FILL_COLOR (1UL<<9)
- #define DECFRAME_8BIT_CONFIG_PALETTE (1UL<<10)
- #define DECFRAME_8BIT_DITHER (1UL<<11)
- #define DECFRAME_VIEW_RECT_ORIGIN (1UL<<12)
- #define DECFRAME_INPUT_TRANS_MASK (1UL<<13)
- #define DECFRAME_VALID (1UL<<31)
-
- /* Signals that the fill color provided is not a defined value */
- #define DECFRAME_FILL_UNDEFINED 0xFF000000
-
- typedef struct {
- DWORD dwSize;
- DWORD dwFourCC;
- DWORD dwVersion;
- LONG mtType;
- LONG oeEnvironment;
- DWORD dwFlags;
-
- DWORD dwTimeLimit; /* version 1.0 */
- R4_RECT rDecodeRect; /* version 1.0 */
- R4_RECT rViewRect; /* version 1.0 */
- PTR_R4_RECT prBoundingRect; /* version 1.0 */
- PTR_R4_BITMASK pbmTransparencyBitmask; /* version 1.0 */
- PTR_R4_FLAG pfUpdatedTransparencyBitmask; /* version 1.0 */
- LONG lBrightness; /* version 1.0 */
- LONG lSaturation; /* version 1.0 */
- LONG lContrast; /* version 1.0 */
-
- DWORD dwFillColor; /* version 1.2 */
- DWORD dwFirstPalIndex; /* version 1.2 */
- DWORD dwLastPalIndex; /* version 1.2 */
- LPRGBQUAD prgbPalette; /* version 1.2 */
- R4_DITHER eDither; /* version 1.2 */
- R4_FLAG fViewRectOrigin; /* version 1.2 */
- PTR_R4_BITMASK pbmInputTransparencyBitmask; /* version 1.2 */
- } R4_DEC_FRAME_DATA, FAR * PTR_R4_DEC_FRAME_DATA;
-
- /* Turning scalability off completely was accomplished in versions 1.0 and 1.1
- * of the interface by decoding in STEPPING mode. Setting the scalability
- * flag to false meant not to drop the quality of frames, but frames could
- * still be dropped. For this reason, if SC_OFF is used, it will map to
- * stepping mode, and SC_DONT_DROP_QUALITY occupies the position of "false."
- */
- typedef enum {
- SC_DONT_DROP_QUALITY,
- SC_ON,
- SC_DONT_DROP_FRAMES,
- SC_OFF,
- } R4_SCALABILITY;
-
- /* Other decode parameters can only be changed prior to either an
- * ICM_DECOMPRESS_BEGIN or an ICM_DECOMPRESSEX_BEGIN message. These
- * are found in the R4_DEC_SEQ_DATA structure.
- * See CUSTOM_INTERFACE_ENCODER_DATA for structure size constraints.
- */
- #define DECSEQ_KEY (1UL<<0)
- #define DECSEQ_SCALABILITY (1UL<<1)
- #define DECSEQ_FILL_TRANSPARENT (1UL<<2)
- #define DECSEQ_ALT_LINE (1UL<<3)
- #define DECSEQ_VALID (1UL<<31)
-
- typedef struct {
- DWORD dwSize;
- DWORD dwFourCC;
- DWORD dwVersion;
- LONG mtType;
- LONG oeEnvironment;
- DWORD dwFlags;
-
- DWORD dwKey; /* version 1.0 */
- R4_FLAG fEnabledKey; /* version 1.0 */
- LONG eScalability; /* version 1.2; 1.0 fScalability */
- R4_FLAG fFillTransparentPixels; /* version 1.0 */
- R4_FLAG fAltLine; /* version 1.1 */
- } R4_DEC_SEQ_DATA, FAR * PTR_R4_DEC_SEQ_DATA;
-
-
- /* Decode persistent data parameters can only be sent prior to the
- * first ICM_DECOMPRESS_BEGIN message. These are found in the
- * R4_DECODE_INIT_DATA structure.
- */
- #define DECINIT_VALID (3UL<<30) /* valid bit + one other bit */
-
- typedef struct {
- DWORD dwSize;
- DWORD dwFourCC;
- DWORD dwVersion;
- LONG mtType;
- LONG oeEnvironment;
- DWORD dwFlags;
-
- R4_FLAG fBidir; /* version 1.2 */
- R4_FLAG fDeltaFrames; /* version 1.2 */
- R4_FLAG fTransparency; /* version 1.2 */
- DWORD dwNLevels; /* version 1.2 */
- DWORD dwTileWidth; /* version 1.2 */
- DWORD dwTileHeight; /* version 1.2 */
- } R4_DECODE_INIT_DATA, FAR * PTR_R4_DECODE_INIT_DATA;
-
-
- /* Encode parameters can only be changed prior to an ICM_COMPRESS_BEGIN
- * messsage. These are found in the R4_ENC_SEQ_DATA structure (these
- * include the parameters that can be set in the super dialog box).
- * See CUSTOM_INTERFACE_ENCODER_DATA for structure size constraints.
- */
- #define ENCSEQ_KEY (1UL<<0)
- #define ENCSEQ_MINIMUM_VIEWPORT (1UL<<1)
- #define ENCSEQ_TRANSPARENCY (1UL<<2)
- #define ENCSEQ_SCALABILITY (1UL<<3)
- #define ENCSEQ_BI_DIR_PREDICTION (1UL<<4)
- #define ENCSEQ_PLAYBACK_PLATFORM (1UL<<5)
- #define ENCSEQ_RANDOM_KEY_AND_BIDIR (1UL<<6)
- #define ENCSEQ_FRAME_INFO (1UL<<7)
- #define ENCSEQ_QUICK_COMPRESS (1UL<<8)
- #define ENCSEQ_VALID (1UL<<31)
-
- typedef struct {
- DWORD dwSize;
- DWORD dwFourCC;
- DWORD dwVersion;
- LONG mtType;
- LONG oeEnvironment;
- DWORD dwFlags;
-
- DWORD dwKey; /* version 1.0 */
- DWORD dwMinViewportWidth; /* version 1.0 */
- DWORD dwMinViewportHeight; /* version 1.0 */
- R4_RANGE rngTransparencyRange; /* version 1.0 */
- PTR_R4_BITMASK pbmTransparencyBitmask; /* version 1.0 */
- LONG tmTransparencyMethod; /* version 1.0 */
- R4_FLAG fEnabledKey; /* version 1.0 */
- R4_FLAG fScalability; /* version 1.0 */
- R4_FLAG fBiDirPrediction; /* version 1.0 */
- R4_FLAG fRandomKeyAndBiDir; /* version 1.0 */
- DWORD dwPlaybackPlatform; /* version 1.0 */
- WORD wFrameLatency; /* version 1.0 */
- WORD wDeadFrames; /* version 1.0 */
- R4_FLAG fQuickCompress; /* version 1.1 */
- } R4_ENC_SEQ_DATA, FAR * PTR_R4_ENC_SEQ_DATA;
-
-
- #endif /* __VFW_SPEC_H__ */
-